using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using UnityEngine;

/// <summary>
/// TTS（Text-To-Speech）：文本转语音基类
/// 提供统一的接口供子类实现文本转语音功能
/// </summary>
public class TTS : MonoBehaviour
{
    /// <summary>
    /// 文本合成语音的 API 地址（由具体实现类填写）
    /// </summary>
    [SerializeField] protected string m_PostURL = string.Empty;

    /// <summary>
    /// 用于记录合成所用时间的计时器
    /// </summary>
    [SerializeField] protected Stopwatch stopwatch = new Stopwatch();

    /// <summary>
    /// 合成语音（只返回音频，不返回文本）
    /// 子类应实现具体的合成逻辑，如调用讯飞/百度/OpenAI 等 API
    /// </summary>
    /// <param name="_msg">要合成的文本</param>
    /// <param name="_callback">合成完成后返回的音频剪辑回调</param>
    public virtual void Speak(string _msg, Action<AudioClip> _callback) {}

    /// <summary>
    /// 合成语音，同时返回合成后的音频和最终使用的文本
    /// 适用于合成前对文本进行了格式化处理（如换行、插入标点等）
    /// </summary>
    /// <param name="_msg">要合成的文本</param>
    /// <param name="_callback">回调：返回音频剪辑和最终合成使用的文本</param>
    public virtual void Speak(string _msg, Action<AudioClip, string> _callback) {}
}